﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;

namespace start_daemon
{
    public partial class frmMetodos : Form
    {
        public frmMetodos()
        {
            InitializeComponent();
        }
        int contador = 0;
        private void frmMetodos_FormClosing(object sender, FormClosingEventArgs e)
        {
            e.Cancel = true;
        }

        private void time_sondeo_Tick(object sender, EventArgs e)
        {
            try
            {
                if (contador < 1)
                    contador++;
                else
                {
                    if (contador >= 1)
                    {
                        Sonder_existe_error();
                        contador = 0;
                    }
                }
            }
            catch (Exception ex)
            { 
            
            }
        }
        void Sonder_existe_error()
        {

            gestiona_proceso_no_esta_iniciado();
        }
      

        void gestiona_proceso_no_esta_iniciado()
        {
            bool existe_iniciado = false;
            //lst_procesos.Items.Clear();
            //Obtiene el nombre del proceso a ser iniciado
            string[] proceso_name = File.ReadAllLines("proceso.txt");

            //Buscar proceso a ser iniciado de la lista de procesos de la maquinas
            foreach (Process p in Process.GetProcesses(Environment.MachineName))
            {
                //lst_procesos.Items.Add(p.ProcessName);

                foreach (string proces in proceso_name)
                {
                    if (p.ProcessName.Equals(proces))
                    {
                        existe_iniciado = true;
                        break;
                    }
                }
                if (existe_iniciado)
                    break;
            }
            //Limpiar el archivo de error
            StreamWriter st = new StreamWriter("error.txt");
            st.Write("");
            st.Close();

            if (!existe_iniciado)
                start_process();
        }
        void start_process()
        {
            string[] proceso_name = File.ReadAllLines("proceso.txt");            
            string path_process = "";

            if (proceso_name.Length > 0)
            {
                path_process = "\"" + Application.StartupPath + @"\" + proceso_name[0] + ".exe\"";

                Process cmd = new Process();

                cmd.StartInfo.FileName = "cmd.exe";
                cmd.StartInfo.RedirectStandardInput = true;
                cmd.StartInfo.RedirectStandardOutput = true;
                cmd.StartInfo.CreateNoWindow = true;
                cmd.StartInfo.UseShellExecute = false;

                cmd.Start();
                string directorio = path_process;

                cmd.StandardInput.WriteLine(directorio);
                cmd.StandardInput.Flush();
                cmd.StandardInput.Close();

            }

        }
    }
}
